/**
 * 
 */
package edu.gtcfla.km.admin.appmodules.service;

import java.util.Set;

import org.hibernate.service.spi.ServiceException;
import org.vsg.biz.BusinessOperationException;

import edu.gtcfla.km.admin.appmodules.vo.ModuleFunctionPermissionVO;
import edu.gtcfla.km.admin.appmodules.vo.ModuleFunctionVO;

/**
 * @author Bill Vison
 *
 */
public interface FunctionManagerService {

	
	void update(ModuleFunctionVO vo) throws BusinessOperationException;
	
	/**
	 * show function permission vo list 
	 * @param roleId
	 * @param modResId
	 * @return
	 * @throws ServiceException
	 */
	Set<ModuleFunctionPermissionVO> listPermissionFunsByRoleId(String roleId , String modResId) throws BusinessOperationException;
	
	/**
	 * save and setting resource
	 * @param roleId
	 * @param modResId
	 * @param newPerms
	 * @throws ServiceException
	 */
	void authFunsWithUnderRes(String roleId , String modResId , Set<ModuleFunctionPermissionVO> newPerms) throws BusinessOperationException;
	
	
	void update(ModuleFunctionVO vo ,  String[] ignoreProperties) throws BusinessOperationException;
	
	/**
	 * update define all function
	 * @param voSet
	 * @throws ServiceException
	 */
	void updateAllFunctions(Set<ModuleFunctionVO> voSet) throws BusinessOperationException;
	
	/**
	 * update function
	 * @param voSet
	 * @param ignoreProperties
	 * @throws ServiceException
	 */
	void updateAllFunctions(Set<ModuleFunctionVO> voSet , String[] ignoreProperties) throws BusinessOperationException;
}

